Allow removing all closures with gtk_accel_group_disconnect
authorChristian Dywan <christian@twotoasts.de>
Tue, 27 Oct 2009 20:25:56 +0000 (21:25 +0100)
committerChristian Dywan <christian@twotoasts.de>
Tue, 27 Oct 2009 20:25:56 +0000 (21:25 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=599403

gtk/gtkaccelgroup.c

index 03ade12668c1418abe083a6859648bb818defb11..29e34eb3f327d71ff956feb942edf6c07b0a7b65 100644 (file)
@@ -690,11 +690,14 @@ gtk_accel_group_connect_by_path (GtkAccelGroup    *accel_group,
 /**
  * gtk_accel_group_disconnect:
  * @accel_group: the accelerator group to remove an accelerator from
- * @closure:     the closure to remove from this accelerator group
+ * @closure:     the closure to remove from this accelerator group, or %NULL
+ *               to remove all closures
  * @returns:     %TRUE if the closure was found and got disconnected
  *
  * Removes an accelerator previously installed through
  * gtk_accel_group_connect().
+ *
+ * Since 2.20 @closure can be %NULL.
  */
 gboolean
 gtk_accel_group_disconnect (GtkAccelGroup *accel_group,
@@ -705,7 +708,7 @@ gtk_accel_group_disconnect (GtkAccelGroup *accel_group,
   g_return_val_if_fail (GTK_IS_ACCEL_GROUP (accel_group), FALSE);
 
   for (i = 0; i < accel_group->n_accels; i++)
-    if (accel_group->priv_accels[i].closure == closure)
+    if (accel_group->priv_accels[i].closure == closure || !closure)
       {
        g_object_ref (accel_group);
        quick_accel_remove (accel_group, i);